/*
 * lib2Desa - Another 2D game library in C++
 * Copyright (C) 2009 Erivaldo Xavier de Lima Filho
 *
 * This program is free software and is distributed under GNU General Public License version 3. You can modify and/or redistribute
 * it under the terms of GPL version 3 or posterior version. This program comes with NO WARRANTY, for more details, see LICENSE,
 * or <http://www.gnu.org/licenses>.
 *
 * Contact info:
 *
 *	Erivaldo Xavier de Lima Filho, desadoc@gmail.com
 *
 */

#ifndef _IGRAPHICDEVICE_HPP
#define _IGRAPHICDEVICE_HPP

#include "Core/shared_ptr.hpp"
#include "Core/Color.hpp"
#include "Core/IImage.hpp"

#include <string>

#ifndef _NO_NAMESPACE
namespace lib2Desa {
#endif

class Sprite;

class IGraphicDevice
{
private:

public:

	virtual ~IGraphicDevice(void){}

	virtual bool init_screen(u16 width, u16 height) = 0;

	virtual void refresh_screen(void) = 0;
	virtual void set_clear_color(Color c) = 0;
	virtual void clear_screen(void) = 0;

	virtual shared_ptr<IImage> load(const std::string& filename) const = 0;
	virtual void draw_image(const shared_ptr<const IImage>& im, const vector3f& pos = vector3f()) const = 0;
};

#ifndef _NO_NAMESPACE
}
#endif

#endif /*IGraphicDevice.hpp included*/
